/* 
 * File:   Operacion.h
 * Author: max
 *
 * Created on May 31, 2013, 1:00 AM
 */

#ifndef OPERACION_H
#define	OPERACION_H

#include <stdint.h>
#include <string>
#include <vector>
#include "common_Excepcion.h"
#include "client_IRespuestaServidorManejador.h"
#include "common_Mutex.h"

using namespace TP;
using namespace TP::Comunicacion;

namespace TP { namespace Operaciones {
    
class Operacion : public IRespuestaServidorManejador {

public:
    Operacion(const uint32_t &pId);

    virtual ~Operacion();

    const uint32_t& getId ();
    
    virtual bool finalizada();
    
    virtual bool asociado(vector<string> &pRespuesta);
    
    virtual void ejecutar() = 0;
        
    virtual void procesarRespuesta (vector<string> &pRespuesta) = 0;    

    virtual bool setFinalizada(bool pEstado);
    
private:
    uint32_t _id;
    bool _estado;
    Mutex _estadoMutex;
    vector<string> _mensaje;
};

}}

#endif	/* OPERACION_H */

